Skip to content

starlette: Remove maximum version constraint #3456

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 19 commits into from
May 23, 2025

Conversation

MattiasDC
Copy link
Contributor

@MattiasDC MattiasDC commented Apr 29, 2025

Description

Remove maximum version constraint on starlette, by fixing unit tests. Fixed some warnings in unit tests.

Problem was that the environment was patched only during the setUp execution, and not during the tests themselves. By putting the patch decorator on the class itself, the environment variables are patched during the test class, as is done in another place in the same file.

This PR also includes some small changes to reduce the amount of warnings encountered in the unit tests.

  • Get rid of deprecated calls to the route and route_websocket decorators
  • As StarletteInstrumentor._uninstrument can clear all instrumented apps, use a discard i.s.o. remove in the deletor of _InstrumentedStarlette to prevent a KeyError being raised

Fixes #3317

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How Has This Been Tested?

All existing unit tests pass with the newest version of starlette (0.46.2)

Does This PR Require a Core Repo Change?

  • Yes. - Link to PR:
  • No.

Checklist:

See contributing.md for styleguide, changelog guidelines, and more.

  • Followed the style guidelines of this project
  • Changelogs have been updated
  • Unit tests have been added
  • Documentation has been updated

… unit tests. Fixed some warnings in unit tests.
Copy link

linux-foundation-easycla bot commented Apr 29, 2025

CLA Signed

The committers listed above are authorized under a signed CLA.

@MattiasDC MattiasDC requested a review from a team as a code owner April 29, 2025 20:06
@MattiasDC
Copy link
Contributor Author

@Kludex you mentioned you were interested in doing a review for #3317. If this is a bad time, would it be possible for you appoint someone else?

@MattiasDC
Copy link
Contributor Author

@aabmass could you review as well and are you able to upgrade the requirements? I'm not comfortable enough to update the lockfiles.

…trap/test-requirements. Use setUp/tearDown iso decorator on test class
@Kludex
Copy link
Contributor

Kludex commented May 2, 2025

We should test the min version.

@MattiasDC
Copy link
Contributor Author

MattiasDC commented May 2, 2025

We should test the min version.

Hi @Kludex thanks for joining,

Do you mean something else than this test:
'instrumentation-starlette-oldest 3.8 Ubuntu', which uses

Or am I missing something?

@MattiasDC
Copy link
Contributor Author

@Kludex those oldest tests were indeed failing. I've increased the minimal version to 0.37.2. This one is a year old and didn't cause any problems with me. Is this acceptable? Older versions were causing this issue for me encode/starlette#2770

@MattiasDC MattiasDC changed the title ISSUE-3317: Remove maximum version constraint on starlette, by fixing unit tests ISSUE-3317: Remove maximum version constraint, increase minimum version on starlette by fixing unit tests May 2, 2025
@MattiasDC
Copy link
Contributor Author

PR is ready to be reviewed again @emdneto, if anything needs a change, feel free to put me to work again ;)

@xrmx
Copy link
Contributor

xrmx commented May 5, 2025

@Kludex those oldest tests were indeed failing. I've increased the minimal version to 0.37.2. This one is a year old and didn't cause any problems with me. Is this acceptable? Older versions were causing this issue for me encode/starlette#2770

That maybe be fixed by using an older httpx in the requirements.

@MattiasDC
Copy link
Contributor Author

MattiasDC commented May 6, 2025

@Kludex those oldest tests were indeed failing. I've increased the minimal version to 0.37.2. This one is a year old and didn't cause any problems with me. Is this acceptable? Older versions were causing this issue for me encode/starlette#2770

That maybe be fixed by using an older httpx in the requirements.

Conditional dependencies are not supported in requirements.in files. Do you propose to add a .in file for latest and one for oldest?

emdneto added 2 commits May 22, 2025 11:46
Signed-off-by: emdneto <[email protected]>
@emdneto emdneto changed the title ISSUE-3317: Remove maximum version constraint, increase minimum version on starlette by fixing unit tests starlette: Remove maximum version constraint May 22, 2025
emdneto and others added 2 commits May 22, 2025 12:26
Signed-off-by: emdneto <[email protected]>
Co-authored-by: Riccardo Magliocchetti <[email protected]>
Copy link
Contributor

@xrmx xrmx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With the changelog fixed

@xrmx xrmx requested a review from emdneto May 23, 2025 12:20
@xrmx xrmx enabled auto-merge (squash) May 23, 2025 12:21
@xrmx xrmx merged commit e2ba6d4 into open-telemetry:main May 23, 2025
720 checks passed
@Kludex
Copy link
Contributor

Kludex commented May 23, 2025

I know this is not the right place, so please don't ask me to create an issue... But can't we somehow modify the starlette instrumentation to work with FastAPI and just have one instead of 2? It's a subclass anyway, and it seems it covers the same points.

Happy to talk or hack this at PyCon IT (cc @xrmx)

@xrmx
Copy link
Contributor

xrmx commented May 23, 2025

I know this is not the right place, so please don't ask me to create an issue... But can't we somehow modify the starlette instrumentation to work with FastAPI and just have one instead of 2? It's a subclass anyway, and it seems it covers the same points.

Happy to talk or hack this at PyCon IT (cc @xrmx)

Sure, we can discuss it at PyCon IT.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Starlette instrumentation tests fail recent versions starlette >= 0.15.0
4 participants